/* Universidad del Valle de Guatemala
 * CC2003 - Algoritmos y Estructuras de Datos
 * PROYECTO #1: RURPLE ME
 * Fecha de Entrega: Jueves 11 de Agosto de 2011
 */

/**
 * Clase permite almacenar tanto Mapas como Scripts en la aplicacon.
 * @author Jose Antonio Bagur (10275), Luis Antonio Siguenza (10297) y Emilo Jose Miranda (10411).
 */

/* SE CARGAN LOS PAQUETES A UTILIZAR EN LA CLASE */
import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreException;

public class ArchivosRurple {
    
    /* ATRIBUTOS DE LA CLASE ARCHIVOS RURPLE */
    
    private RecordStore archivo;                                                // MANEJO DEL ARCHIVO
    
    /* METODOS DE LA CLASE ARCHIVORURPLE */
       
    /**
     * Metodo que permite cargar archivos almacenados en la aplicacion, tanto mapas como scripts.
     * @param name nombre del archivo.
     */
    public void abrir(String name) {
        try {
            archivo = RecordStore.openRecordStore(name, true);            
        } catch (RecordStoreException e) {
            System.out.println("Error: No se pudo abrir archivo");
        }
    }
    
    /**
     * Metodo que permite almacenar archivos en la aplicacion, tanto mapas como scripts.
     * @param text datos a almacenar en el archivo.
     */
    public void escribir(String text) {
        byte[] data = text.getBytes();
        
        try {
            archivo.addRecord(data, 0, data.length);
        } catch (RecordStoreException e) {
            System.out.println("Error: No se pudo escribir en archivo");
        }        
    }
    
    /**
     * Metodo que permite verificar un archivo almacenado en la aplicacion.
     * @param num numero de archivo a verificar.
     * @return datos del archivo a verificar. 
     */
    public String leer(int num) {
        byte[] data;
        int size;
        String text = "";
        
        try {
            size = archivo.getRecordSize(num);
            data = archivo.getRecord(num);
            text = new String(data, 0, size);            
        } catch (RecordStoreException e) {
            System.out.println("Error: No se pueden leer los registros");
        }
        
        return text;
    } 
    
    /**
     * Metodo que permite conocer la cantidad de archivos almacenados en la aplicacion.
     * @return cantidad de archivos almacenados.
     */
    public int cantidad() {
        int cant = 0;
        
        try {            
            cant = archivo.getNumRecords();
        } catch (RecordStoreException e) {
            System.out.println("Error: No se puede especificar el No de archivos");
        }
        
        return cant;
    }    
    
    /**
     * Metodo que permite finalizar el almacenamiento de archivos en la aplicacion.
     */
    public void cerrar() {
        try {
            archivo.closeRecordStore();
        } catch (RecordStoreException e) {
            System.out.println("Error: No se puede especificar el No de archivos");
        }
    }
    
    /**
     * Metodo que permite eliminar todos los archivos almacenados en la aplicacion.
     * @param name nombre del archivo a eliminar de la aplicacion.
     * @return estado de la eliminacion de archivos.
     */
    public String borrarTodo(String name) {
        String advertencia = "";
        
        try {
            RecordStore.deleteRecordStore(name);
            advertencia = ("Archivos eliminados");
        } catch (RecordStoreException e) {
            advertencia = ("No se pudieron eliminar los archivos");
        }
        
        return advertencia;
    }
} // FIN DE LA CLASE ARCHIVOSRURPLE